#ifndef PRIORITYQUEUEASTAR_H
#define PRIORITYQUEUEASTAR_H

#include <vector>
#include <algorithm>
using namespace std;
#include "Node.h"

bool Inf(Node *n1, Node *n2);

class PriorityQueueAStar
{
public:
	PriorityQueueAStar(Node &dest);
	~PriorityQueueAStar();

	Node *Pop();
	void Push(Node *n);

	vector<Node*>GetHeap(){return m_heap;}
	inline void Clear(){m_heap.clear();}
	bool IsEmptyHeap(){return m_heap.empty();}
	bool IsFinished(Node &dest);
	bool UpdateVisited(int x,int y,int z, int cost, Node *parent);

private:
	vector<Node*> m_heap;

};

bool Inf(Node *n1, Node *n2);

#endif